<?php

/**
 * 
 * \file portail.php
 * \author Romain Daniel
 * \version 0.1
 * \date 28 avril 2009
 *
 */

/** 
 * \class Portail
 * \brief Classe contenant toutes les fonctions relatives au portail.
 *
 */
class Portail {

	/** \fn __construct ()
	 * \brief Constructeur de la classe
	 * 
	 * @return Pas de retour
	 */
	public function __construct () { }
	
	/** \fn idMax($champ,$table)
 	 * \brief Cherche l'identifiant maximum
 	 * 
 	 * Fonction cherchant l'identifiant maximum parmis ceux d'une table de la BDD.
 	 * S'il n'y a pas d'id dans la BDD, l'identifiant vaudra 0.
 	 *
 	 * @param $champ string correspondant au champ a rechercher
 	 * @param $table string correspondant a la table dans laquelle on fait la recherche
 	 * @return $max integer contenant l'identifiant maximum
 	 */
	public function idMax($champ,$table) {
	
		$q0 = "SELECT MAX($champ) FROM $table";
		$r0 = mysql_query($q0) or die('Selection impossible');
		
		if (mysql_num_rows($r0) >= 1) {
			$max = mysql_fetch_array($r0);
		}
		
		else $max = 0;
		
		return $max;
		
	}
	
	/** \fn verifierUtilisateur($login,$mdp)
 	 * \brief Verifie si un utilisateur existe avec tel mot de passe
 	 * 
 	 * Fonction verifiant si un utilisateur existe dans portail.
 	 * Si l'utilisateur est trouve, on compare les mots de passe.
 	 *
 	 * @param $login string correspondant au login
 	 * @param $mdp string correspondant au mot de passe
 	 * @return bool indiquant si l'utilisateur existe et que le mdp est correct, ou non
 	 */
	public function verifierUtilisateur($login,$mdp) {
	
		$q = "SELECT login_p FROM portail WHERE login_p='$login'";
		$r = mysql_query($q) or die('Selection impossible');
		
		//si l'utilisateur $login n'existe pas
		if(mysql_num_rows($r) < 1) {
			echo "<script type='text/javascript'>alert(\"Utilisateur ou Mot de passe incorrect\");document.portal.loginp.focus();</script>";
			return false;
		}
		
		//si l'utilisateur est present dans portail
		else {
		
			//on verifie son mot de passe
			$q1 = "SELECT password_p FROM portail WHERE password_p='$mdp' AND login_p='$login'";
			$r1 = mysql_query($q1) or die('Selection impossible');
			
			if(mysql_num_rows($r1) >= 1) {
				return true;
			}
			
			else {
				echo "<script type='text/javascript'>alert(\"Utilisateur ou Mot de passe incorrect\");document.portal.loginp.focus();</script>";
				return false;
			}
			
		}
		
	}
	
	/** \fn chercherDroit($login)
 	 * \brief Cherche quel droit a un utilisateur
 	 * 
 	 * @param $login string correspondant au login
 	 * @return integer representant le type de droit
 	 */
	public function chercherDroit($login) {
	
		$q = "SELECT droit_p FROM portail WHERE login_p='$login'";
		$r = mysql_query($q) or die('Selection impossible');
		
		if(mysql_num_rows($r) >= 1) {
		
			$row = mysql_fetch_assoc($r);
		
			switch ($row['droit_p']) {
				case 'admin':
    			return 1;
    		break;
				case 'intervenant':
    			return 2;
    		break;
				case 'invite':
    			return 3;
    		break;
			}
		
		}
		
		else {
			echo "Erreur de login";
			return false;
		}
		
	}
	
	/** \fn creerLog($contenu,$chemin)
 	 * \brief Cree un fichier .log
 	 *
 	 * @param $contenu string correspondant au contenu du fichier .log
 	 * @param $chemin string correspondant au chemin du fichier .log
 	 * @return $f bool contenant le resultat de la creation
 	 */
	public function creerLog($contenu,$chemin) {
		
		$date = date("d-m-Y"); //de forme 31-12-2009
		$heure = date("H:i:s"); //de forme 23:59:59
		$fichier = $chemin.$date.".log";
		
		$f=fopen($fichier,"a") or die('Ouverture impossible'); //Ouverture du fichier avec le mode ajout, si le fichier n'existe pas il est cree
		fwrite($f,$contenu.$heure.".\r\n"); //Ceci ajoutera ou ecrira le contenu dans le fichier. voir si \r\n fonctionne sous UNIX...
		fclose($f);
		
		return $f;
		
	}
	
	/** \fn lireFichier($nom)
 	 * \brief Lit un fichier
 	 *
 	 * Lit le fichier contenant la description d'une intervention
 	 *
 	 * @param $nom string correspondant au nom du fichier .tmp
 	 * @return $res string contenant la description ou false
 	 */
	public function lireFichier($nom) {
		
		//si le fichier existe
		if (file_exists($nom)) {
			$handle = fopen($nom,"r"); //rb?
			$res = fread($handle,filesize($nom)); //vaut false si probleme
			fclose($handle);
		}
		
		//si le fichier n'existe pas
		else $res = false;
		
		return $res;
		
	}
	
	/** \fn creerInvite($login,$mdp,$createur)
 	 * \brief Cree un invite
 	 * 
 	 * Fonction creant un invite unique dans la BDD et retournant TRUE si l'insertion a reussit, FALSE sinon.
 	 *
 	 * @param $login string correspondant au login
 	 * @param $mdp string correspondant au mot de passe
 	 * @param $createur string correspondant au createur
 	 * @return $r bool contenant le resultat de la creation de l'intervenant
 	 */
	public function creerInvite($login,$mdp,$createur) {
	
		//recherche s'il y a un intervenant $login dans la table portail
		$q0 = "SELECT login_p FROM portail WHERE login_p='$login'";
		$r0 = mysql_query($q0) or die('Selection impossible');
		
		//si intervenant inexistant
		if(mysql_num_rows($r0) < 1) {
		
			//requete SQL permettant de creer un nouvel intervenant
			$q = "INSERT INTO portail (login_p,password_p,droit_p,email_p) VALUES('$login','$mdp','invite','')";
			//execution de la requete
			$r = mysql_query($q) or die('Creation impossible');
			
			$p = new Portail();
			$p->creerLog("Invite \"".$login."\" cree par \"".$createur."\" a ","../");

			return $r;
		
		}
		
		else {
			echo "Utilisateur deja existant";
			return false;
		}
		
	}
	
} //fin class

?>
